from pydoc import describe
from django.db import models
from django.contrib.auth.models import User

# Create your models here.
# Django回自动创建主键和ID
# 写好模型后，也就对应我们这个系统的数据库，需要迁移模型
# python manage.py makemigrations
# 此时，Django 在 boards/migrations 目录创建了一个名为 0001_initial.py的文件。它代表了应用程序模型的当前状态
# 下一步是将我们生成的迁移文件应用到数据库
# python manage.py migrate

class Board(models.Model):
    """板块类
    """
    name = models.CharField(max_length=30, unique=True)  # upique用来表明唯一性
    description = models.CharField(max_length=100)

    def __str__(self) -> str:
        return self.name


class Topic(models.Model):
    """话题类
    """
    subject = models.CharField(max_length=255)
    last_updated = models.DateTimeField(auto_now_add=True)  # 自动添加当前时间和日期
    board = models.ForeignKey(Board, related_name='topics')  # related_name建立反向关联，可以通过Board.topics来访问这个板块下的话题
    starter = models.ForeignKey(User, related_name='topics')  # Django回自动建立反向关系，默认命名为(类名)_set，我们是对它进行了重命名


class Post(models.Model):
    """评论或回复类、帖子类
    """
    message = models.TextField(max_length=4000)
    topic = models.ForeignKey(Topic, related_name='posts')
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(null=True)
    created_by = models.ForeignKey(User, related_name='posts')
    updated_by = models.ForeignKey(User, null=True, related_name='+')  # 设置为'+'表示不需要这种反向关系，会被忽略（我们不关心用户更新了哪些帖子）
